// // 统一管理当前项目所有的接口 => 
// // 只处理接口,不处理业务(功能)
axios.defaults.baseURL = 'http://api-breakingnews-web.itheima.net' // 根路径 全局的

// // 添加响应拦截器
// axios.interceptors.response.use(function (response) {
//   // 对响应数据做点什么
//   console.log('对响应做了拦截', response);
//   const { message } = response.data
//   layer.msg(message);
//   return response;
// }, function (error) {
//   // 对响应错误做点什么
//   return Promise.reject(error); // es6的语法 => node 第五天会讲
// });

// // 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  console.log('请求拦截器', config);
  // 判断如果路径不是以api开头的, 添加Authorization
  // startsWith('判断条件') 字符串的方法,判断是否以xxx 开头
  if (!config.url.startsWith('/api')) {//路径不是以/api开头
    config.headers.Authorization = localStorage.getItem('token')
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// //统一管理接口
// // axios.defaults.baseURL = 'http://api-breakingnews-web.itheima.net'

// //登录接口封装
// const loginMethod = (data,callback)=>{
//     axios.post(`/api/login`,data).then(res =>{
//         callback(res)
//     })
// }

// //首页回调封装
// const getUserMethod =callback =>{
//     axios.get(`/my/userinfo`,{
//         //传递token 请求 不然会失败
//         headers:{
//             Authorization:localStorage.getItem('token')
//         }
//     }).then(res =>{
//         callback(res)
//     })
// }

// //index 首页获取用户个人信息
// const getUserInfo = callback => {
//     axios.get(`/my/userinfo`).then(res => {
//       callback(res)
//     })
//   }



// -----------------------------------------开始封装-----------------------------------------
//注册
const regMethod=(data,callback)=>{
    axios.post(`/api/reguser`,data).then(res=>{
     callback(res)
    })
}
//登录
const loginMethod=(data,callback)=>{
    axios.post(`/api/login`,data).then(res=>{
        callback(res)
    })
}
//登录到首页
// const indexMethod=(callback)=>{
//     axios.get(`/my/userinfo`,{
//         headers:{
//             Authorization:localStorage.getItem('token')
//         }
//     }).then(res =>{
//        callback(res)
//     })
// }

// ---------------------------------用户信息开始封装---------
const getUserInfoMethod=(callback)=>{
    axios.get(`/my/userinfo`).then(res=>{
        callback(res)
    })
}
const modifyMethod= (data,callback)=>{
    axios.post(`/my/userinfo`,data).then(res=>{
        callback(res)
    })
}
// ---------------------------密码---------
const updatePwd =(data,callback)=>{
    axios.post(`/my/updatepwd`,data).then(res=>{
        callback(res)
    })
}
//--------------------------裁剪头像---------
const avatarMethod= (data,callback)=>{
    axios.post(`/my/update/avatar`, data).then(res => {
        callback(res)
      })
}
// -----------------------分类--------------------
//获取分类
const cateMethod = (callback)=>{
    axios.get(`/my/article/cates`).then(res => {
       callback(res)
      })
}
// 新增分类
const addCate = (data,callback)=>{
    axios.post(`/my/article/addcates`, data).then(res => {
        callback(res)
      })
}
//删除分类
const delCate = (id,callback)=>{
    axios.get(`/my/article/deletecate/${id}`).then(res => {
        callback(res)
      })
}
//更新分类
const upCate=(data,callback)=>{
    axios.post(`/my/article/updatecate`, data).then(res => {
        callback(res)
      })
}
//新增文章
const addArticle=(fd,callback)=>{
    axios.post(`/my/article/add`, fd).then(res => {
        callback(res)
    })  
}
// ======================分页==============================
//文章列表
const getListApi =(query,callback)=>{
    axios.get(`${baseUrl}/my/article/list`,{
        params:query,
    }).then(res=>{
      callback(res)
    })
}
//删除操作
const delMethod=(id,callback)=>{
    axios.get(`${baseUrl}/my/article/delete/${id}`).then(res=>{
        callback(res)
    })
}



//验证模块
const form = layui.form; // 引用layui.js后, 有layui对象(类似于$), 然后拿到内部的form对象(用来管理所有用layui创建的表单-以及使用了lay-veify属性的标签)
form.verify({ // 指定规则名和对应的验证规则
    username: [ // 用户名
        /^[a-z0-9]{6,10}$/,
        '账号名是6到10位由数字, 小写字母组成'
    ],
    password: [ // 密码
        /^[\S]{6,10}$/,
        '密码是6到10位, 不能有空格'
    ],
    // 注册页-确认密码
    repwd: function (value) { // 为什么用函数, 因为不光要获取这个规则对应的标签的值, 还需要用jQ获取另外一个标签的值
        return ($(".pwd").val() !== value) && '两次密码不相同'
    },
    nickname: [ // 昵称
        /^[\u4E00-\u9FA5]+$/,
        '昵称只能是中文'
    ],
    // password: [ // 密码
    //     /^[\S]{6,10}$/,
    //     '密码是6到10位, 不能有空格'
    // ],
    // 修改密码页面使用 - 新旧密码不能一样
    diff: function(value){
        return ($(".oldPwd").val() == value) && "新密码和旧密码不能一样"
    },
    // 修改密码页 - 使用
    same: function(value) {
        return ($(".newPwd").val() !== value) && '两次密码不相同'
    },
    ctname: [
        /^[\u4E00-\u9FA5]+$/,
        "分类名只能是中文"
      ],
      aliname: [
        /^[a-z0-9]+$/,
        "小写英文和数字组成"
      ],
      articleTitle: [
        /^[\u4E00-\u9FA5a-zA-Z0-9_-]+$/,
        "标题只能是中英文, 数字下划线中划线组成"
    ],
    // 分类判断
    cate: function () {
        return $("select[name=cate_id]").val().length == 0 && "请选择文章类别"
    }
})
